package com.cskaoyan.javase.oop2._1extend._9final._3variable._3static;

/**
 * @description: final修饰静态成员变量
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * final修饰静态成员变量,表示一个静态常量
 * 因为静态变量在类的全局仅有一份,是唯一的,所以静态常量也称之为"全局常量"
 * 语法:
 *      [访问权限修饰符] final static 数据类型 变量名;
 * 在这个语法中,全局常量的赋值不能依赖于默认值,必须明确指出它的值,不然会报错
 * 静态变量的赋值方式:
 *      1,显式赋值
 *      2,静态代码块赋值
 * 以上两种赋值方式,仅可用一种,也必须用一种,创建对象过程中赋值方式皆不可用,必须类加载赋值
 *
 * 注意事项:
 *      1,全局常量在类的全局仅一份且是常量不可变,在开发中很常见
 *      2,final static谁先谁后,不影响,都可以
 *      3,访问一个类的基本数据类型和String类型的final静态全局常量不触发完整类加载
 *
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(Tiger.PRICE);
        //Tiger.PRICE = 200;
        //Integer
    }
}

class Tiger{
    final static double PRICE = 100;

    static {
        //PRICE = 200;
    }
}
